package com.cz.video.website.service;


import com.cz.video.common.core.domain.PageQuery;
import com.cz.video.common.core.page.TableDataInfo;
import com.cz.video.website.domain.bo.WebsiteLikeBo;
import com.cz.video.website.domain.vo.WebsiteLikeVo;

import java.util.List;

/**
 * <p>
 * 点赞 服务类
 * </p>
 * @since 2023-07-06
 */
public interface WebsiteLikeService {

  /**
   * 根据条件分页查询点赞
   *
   * @param likeBo 查询条件
   * @param pageQuery 分页条件
   *
   * @return 分页的点赞数据
   */
  TableDataInfo<WebsiteLikeVo> page(WebsiteLikeBo likeBo, PageQuery pageQuery);


  /**
   * 根据条件获取所有点赞信息
   *
   * @return 点赞list
   */
  List<WebsiteLikeVo> list(WebsiteLikeBo likeBo);
  /**
   * 根据 id 查询点赞信息
   *
   * @param id id
   * @return 点赞
   */
  WebsiteLikeVo get(Long id);

  /**
   * 新增点赞信息
   *
   * @param likeBo 点赞信息
   *
   * @return 修改记录数量
   */
  int add(WebsiteLikeBo likeBo);

  /**
   * 修改保存点赞信息
   *
   * @param likeBo 点赞信息
   * @return 修改数据数量
   */
  int update(WebsiteLikeBo likeBo);


  /**
   * 通过点赞ID删除点赞
   *
   * @param ids 点赞ID
   * @return 修改点赞数据数量
   */
  int deleteByIds(Long[] ids);


    /**
     * 判断用户是否点赞
     *
     * @param sourceId 源id
     * @param clientUserId 点赞用户id
     * @return
     */
    boolean isLike(Long sourceId, Long clientUserId);

    /**
     * 判断用户是否点踩
     *
     * @param sourceId 源id
     * @param clientUserId 点赞用户id
     * @return
     */
    boolean isDislike(Long sourceId, Long clientUserId);

    /**
     * 删除 点赞或点踩的数据
     * @param sourceId 源id
     * @param userId 用户id
     * @return
     */
    int delete(Long sourceId, Long userId);

    /**
     * 通过id删除
     * @param ids 点赞id
     * @return
     */
    int deleteByUserIds(Long[] ids);
}
